package secondStage.part5.网络编程.TCP通信程序.多线程实现文件上传;

import java.io.*;
import java.net.Socket;

/**
 * @ClassName: [ClientTcpSendTest]
 * @Description: TCP通信程序，发送信息,数据来自于文本文件，接收反馈
 * @Author: [黄劲松]
 * @CreateDate: [2021-04-06]
 * @Version: [v1.0]
 */
//客户端:数据来自于文本文件,接收服务器反馈
/*
练习6
●客户端: 数据来自于文本文件,接收服务器反馈
●服务器:接收到的数据写入文本文件,给出反馈,代码用线程进行封装，海一个客户端开启个线程
 */
public class ClientTcpSendTest5 {
    public static void main(String[] args) throws IOException {
        //创建客户端的Socket对象(Socket)
        Socket s = new Socket("192.168.1.115", 8080);
        //数据来自于文本文件
        BufferedReader br = new BufferedReader(new FileReader("javaSE.txt"));
        //封装输出流对象写数据
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        String line;
        while ((line=br.readLine())!= null){
            bw.write(line);
            bw.newLine();
            bw.flush();
        }
//        //自定义数据读写完了标记(但是可能会出现文件中有相同的标记，而导致程序停止)
//        bw.write("886");
//        bw.newLine();
//        bw.flush();

        s.shutdownOutput();//表示输出结束标记
        //接收反馈
        BufferedReader brClient = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String data = brClient.readLine();//等待读取数据
        System.out.println("服务器反馈是："+data);

        bw.close();
        s.close();
    }
}
